# -*- coding: utf-8 -*-

import numpy as np


def find_outlier(data):
    outlier = []
    data_array = np.array(data)
    # 使用 numpy 提供的 percentile 方法计算百分位数
    q1 = np.percentile(data_array, 25)  # 上四分位
    q3 = np.percentile(data_array, 75)  # 下四分位
    # 计算 iqr 值
    iqr = q3 - q1
    outlier1 = q1 + 1.5 * iqr
    outlier2 = q3 - 1.5 * iqr
    # 确定异常值
    for i in data:
        if i > outlier1 or i < outlier2:
            outlier.append(i)

    return outlier


with open('test_file.txt', "r") as f:  # xlrd和openpyxl可以读取xls和xlsx
    lines = f.readlines()
data = [float(line.strip().split()[2]) for line in lines[1:]]  # [2]代表取第三个数值比较。第一行是一个表头，被误当作数据处理了。
outliers = find_outlier(data)
print(outliers)
